﻿using System.Collections.Generic;
using System.Threading.Tasks;
using SDCloudSolution.SDCloud.BusinessLayer.Entities;
using SDCloudSolution.SDCloud.Entities.Models;

namespace SDCloudSolution.SDCloud.BusinessLayer.Model.Interfaces
{
    public interface IModelStatisticsComponent
    {
        Task<IEnumerable<ModelStatisticsEntity>> GetModelExecutionStatisticsByModelIdsAsync(IEnumerable<int> modelIds);

        Task<ModelStatisticsEntity> GetAggregatedModelStatisticsAsync(IEnumerable<ModelStatisticsEntity> entities);

        Task LogFailedModelExecutionAsync(int modelId);

        Task LogSuccessModelExecutionMetricsAsync(ModelExecutionMetrics executionMetrics);

        Task<ModelStatisticsEntity> GetModelExecutionStatisticsByModelIdAsync(int modelId);
    }
}
